第一天先來介紹 AWS 上常見的資料處理服務
Lambda
如果資料處理的流程非常簡單也可以使用 lambda,可以選擇熟悉的語言進行開發,減少開發時間。
Glue
當你今天需要分散式的 ETL 運算,或是長時間的程式運算處理,例如Lambda 的計算量不夠或是計算時間無法在15分鐘內完成時,可以考慮 Glue 的 ETL 服務。
Athena
當你今天想要透過 SQL 語法進行資料分析時可以使用 Athena,通常想要快速分析一份資料或是快速產生一份 Report 並且不想透過程式進行,則 Athena 就非常適合你。
Redshift
當今天資料量與筆數非常龐大或是 SQL 的計算比較複雜,則比較適合使用 Redshift,Redshift 的 SQL 查詢有進行優化,可以查詢 TB 甚至是 PB 級的資料量,也因為分散式的架構可以讓你快速的查詢出所需要的資料結果。
初步了解可用的服務後,接下來就要建構資料處理的流程,假設每五分鐘有一個的 log 檔存入 S3,那可能需要在每個 log 檔產生時透過 S3 event 呼叫 lambda 進行初步的資料清洗,或是透過 Glue 定時對前一天的所有 log 檔進行資料清洗。
而清洗方式會根據之後的分析應用而有所不同,如果已經確定分析時所產生的報表內容,那可以在資料清洗時只留下報表所需的資訊,加快報表產生的速度;如果還在資料探索階段則可以只將不正確或不完整的資料去除留下完整的原始資料。
清洗完成後在透過 Athena 或 Redshift 進行分析產出所需的報表,分析量大時可以使用 Redshift,分析量小時或只需要分析部分資料時則可以選用 Athena。
在資料處理的流程中可以依照不同情境與需求選擇服務,適合的服務可以更快的幫助你達到所需要的目的並且平衡所需要的成本。